package com.example.springboot.controller;

import com.example.springboot.common.Result;
import com.example.springboot.controller.request.MessagePageRequest;
import com.example.springboot.entity.Message;
import com.example.springboot.entity.User;
import com.example.springboot.service.IMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/message")
@CrossOrigin//解决跨域问题
public class MessageController extends BaseController{
    @Autowired
    IMessageService userService;

    //    获取所有用户信息
    @GetMapping("/list")
    public Result list(){
        List<Message> users = userService.list();
        return Result.success(users);
    }

    //    获取分页查询
    @GetMapping("/page")
    public Result page(MessagePageRequest userPageRequset){
        return Result.success(userService.page(userPageRequset));
    }

    // 新增留言信息
    @PostMapping("/save")
    public Result save(@RequestBody Message message){
        userService.save(message);
        return Result.success();
    }

    //通过id实现 查询 用户功能
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        Message message = userService.getById(id);
        return Result.success(message);
    }

    //通过id实现 删除 用户功能
    @DeleteMapping("/delete/{id}")
    public Result deleteById(@PathVariable Integer id){
        userService.deleteById(id);
        return Result.success();
    }

    //回复留言接口
    @PostMapping("/reply")
    public Result account(@RequestBody Message message) {
        userService.handleReply(message);
        return Result.success();
    }


// --------------new --------------青哥的
//    @Resource
//    private MessageMapper messageMapper;
//    @Resource
//    private ChatMapper userMapper;
//    @Resource
//    HttpServletRequest request;
//
//    @PostMapping
//    public Resultt<?> save(@RequestBody Message Message) {
//        Message.setUsername(getUser().getUsername());
//        Message.setTime(DateUtil.formatDateTime(new Date()));
//        return Resultt.success(messageMapper.insert(Message));
//    }
//
//    @PutMapping
//    public Resultt<?> update(@RequestBody Message Message) {
//        return Resultt.success(messageMapper.updateById(Message));
//    }
//
//    @DeleteMapping("/{id}")
//    public Resultt<?> delete(@PathVariable Long id) {
//        messageMapper.deleteById(id);
//        return Resultt.success();
//    }
//
//    @GetMapping("/{id}")
//    public Resultt<?> findById(@PathVariable Long id) {
//        return Resultt.success(messageMapper.selectById(id));
//    }
//
//    @GetMapping
//    public Resultt<?> findAll() {
//        return Resultt.success(messageMapper.selectList(null));
//    }
//
//    // 查询所有数据
//    @GetMapping("/foreign/{id}")
//    public Resultt<?> foreign(@PathVariable Integer id) {
//        return Resultt.success(findByForeign(id));
//    }
//
//    @GetMapping("/page")
//    public Resultt<?> findPage(@RequestParam(required = false, defaultValue = "") String name,
//                              @RequestParam(required = false, defaultValue = "1") Integer pageNum,
//                              @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
//        LambdaQueryWrapper<Message> query = Wrappers.<Message>lambdaQuery().like(Message::getContent, name).orderByDesc(Message::getId);
//        return Resultt.success(messageMapper.selectPage(new Page<>(pageNum, pageSize), query));
//    }
//
//    private List<Message> findByForeign(Integer foreignId) {
//        // 根据 foreignId 0 查询所有的留言数据
//        LambdaQueryWrapper<Message> queryWrapper = Wrappers.<Message>lambdaQuery().eq(Message::getForeignId, foreignId).orderByDesc(Message::getId);
//        List<Message> list = messageMapper.selectList(queryWrapper);
//        // 循环所有留言数据
//        for (Message Message : list) {
//            User one = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getUsername, Message.getUsername()));
//            if (StrUtil.isNotBlank(one.getAvatar())) {
//                Message.setAvatar(one.getAvatar());
//            } else {
//                // 默认一个头像
//                Message.setAvatar("https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png");
//            }
//            Long parentId = Message.getParentId();
//            // 判断当前的留言是否有父级，如果有，则返回父级留言的信息
//            // 原理：遍历所有留言数据，如果id跟当前留言信息的parentId相等，则将其设置为父级评论信息，也就是Message::setParentMessage
//            list.stream().filter(c -> c.getId().equals(parentId)).findFirst().ifPresent(Message::setParentMessage);
//        }
//        return list;
//    }

}
